package xuecheng.tool.http;

import java.util.Map;

import com.google.common.collect.Maps;

import cn.hutool.core.util.CharsetUtil;
import cn.hutool.http.HttpUtil;

/**
 * url 参数工具类
 *
 * @author PengXueCheng
 * @version 1.0.0
 **/
public class UrlParamUtils {

    /**
     * 对请求参数进行按 key 升序排序后， 按 key1=value1&key2=value2 的格式拼接成字符串(键值对均进行URL_ENCODE)
     *
     * @param params
     *            参数键值对
     * @return 连接在 URL 后面的参数字符串(不含?)
     */
    public static String map2QueryStringWithEncode(Map<String, Object> params) {
        // 创建正序排列 tree-map
        Map<String, Object> sortParams = Maps.newTreeMap(String::compareTo);
        sortParams.putAll(params);
        return HttpUtil.toParams(sortParams, CharsetUtil.CHARSET_UTF_8);
    }

    /**
     * 对请求参数进行按 key 升序排序后， 按 key1=value1&key2=value2 的格式拼接成字符串(键值对不均进行URL_ENCODE)
     *
     * @param params
     *            参数键值对
     * @return 连接在 URL 后面的参数字符串(不含?)
     */
    @Deprecated
    public static String map2QueryString(Map<String, Object> params) {
        // 创建正序排列 tree-map
        Map<String, Object> sortParams = Maps.newTreeMap(String::compareTo);
        sortParams.putAll(params);
        return HttpUtil.toParams(sortParams);
    }

}
